package com.woniuxy.sys.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 发布订阅模式，交换机类型是fanout
 */
@Configuration
public class RabbitMQConfig {
    //创建2个队列，1个交换机
    @Bean
    public Queue topicQueue1(){
        return new Queue("queue-store");
    }
    @Bean
    public TopicExchange topicExchange(){
        return new TopicExchange("exchange-store");
    }
    // @Bean方法参数注入：
    // 1、先根据类型注入，但是Queue这个类型的对象有多个
    // 2、所以根据方法形参名称，去容器中找这个名称的对象注入
    // 4、因为@Bean注入可以自动把方法返回的对象加入ioc容器，对象名称默认是方法名称。
    // 如果方法参数需要指定名称注入，使用@Qualifier注解。

    //队列1绑定
    @Bean
    public Binding bindingTopicExchangeToQueue1(Queue topicQueue1,TopicExchange topicExchange){
        return BindingBuilder.bind(topicQueue1).to(topicExchange).with("store.*");
    }

}
